<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>
    // - 变量声明提升
    // - 通过var定义(声明)的变量, 在定义语句之前就可以访问到
    // - 值: undefined
    // // console.log(userName);// undefined
    // // var userName = "zhangsan";
    // // console.log(userName);// zhangsan;
    //
    // // 以上代码userName声明被提升
    // var userName;
    // console.log(userName);// undefined
    // userName = "zhangsan";
    // console.log(userName);// zhangsan;


    // var age = 12;
    // var age;
    // console.log(age);// 12


    // - 函数声明提升
    // - 通过function声明的函数, 在之前就可以直接调用
    // - 值: 函数定义(对象)
    // fn(2);
    // function fn(a){
    //     console.log(a);
    // }
    // fn(1);

    // fn2();
    // let fn2 = function(){
    //
    // }
    // fn2();


    // * JS提升是以script为界限的（一段一段的进行预解析）
</script>
<script>
    console.log(a);// a is not defined
</script>
<script>
    console.log(a);// undefined
    var a = 1;
    console.log(a);// 1
</script>
<script>
    console.log(a);// 1
</script>
</html>